# 捕获报错信息
"""
try:
    尝试执行这里的代码
except:
    如果报错，执行这里的代码
else:
    代码没有报错，会执行这里
finally:
    不管的代码成功与否，都会执行
"""
# 变量需要遵循先定义后使用
# print(a)

# 数组越界
"""
try:
    arrayList = [10,20,30]
    print(arrayList[100])
except:
    print("老兄，你代码错误了，检查下，改改")
else:
    print("代码无异常，顺利！")
finally:
    print("代码执行结束")
"""

# 案例一
"""
try:
    print(a)
except NameError as e:      # 指定错误类型进行捕捉。  as是起一个临时别名
    print(f"报错了，报错信息为：{e}")
else:
    print("代码无异常，顺利！")
finally:
    print("代码执行结束")
"""
# 案例二
"""
try:
    print(len(100))
except Exception as e:  # Exception是万能捕捉，任何异常都可以抓到
    print(f"报错了，报错信息为：{e}")
else:
    print("代码无异常，顺利！")
finally:
    print("代码执行结束")
"""
# 案例三
"""
try:
    print(len(100))
    print(bb)
except NameError as e:
    print(f"代码报错了，错误信息为：{e}")
except TypeError as e:
    print(f"代码报错，类型错误：{e}")
except Exception as e:
    print(f"代码报错，错误为：{e}")
else:
    print("代码无异常")
finally:
    print("代码执行结束")
"""

# 自定义，主动抛出异常
# rasie
"""
name = input("请输入姓名：")
if name == '刘超':
    raise ("输入内容是刘超，报错！")
else:
    print("顺利！")
"""

# 断言
list1 = [100,200,300]

"""
assert：断言的关键字
如果断言成功，不会有任何提示信息
如果断言失败，会报错，显示错误的内容

in ：判断是否包含在里
not in ：判断是否不在里
is ：判断地址值是否相同
not is ：判断地址值不相同
== ：判断相等
>=：判断大于等于
<= ：判断小于等于
>：判断是否大于
< ：判断是否小于
!=：判断是否不等于
"""
assert 100 in list1 # 判断100在不在里
assert 400 in list1 # 会报错





